Remote firmware upgrade via I/O connection

ABSTRACT

Imaging devices and methods of operating imaging devices that facilitate reducing nonvolatile storage needs of the imaging devices. The imaging devices are adapted to request control programs from external devices without the need to maintain a nonvolatile image of a control program within the imaging device. Control programs are received on a communication input of the imaging device and stored on a volatile storage media for use by a processor of the imaging device. The embodiments can also facilitate more reliable updating within a networked system in that updating an image of a control program on one network device can automatically lead to updating of multiple imaging devices, thus eliminating a need to individually update each imaging device.

TECHNICAL FIELD OF THE INVENTION

[0001] The present invention relates generally to imaging devices, andin particular to eliminating the need to maintain a nonvolatile image ofa control program on an imaging device.

BACKGROUND OF THE INVENTION

[0002] Imaging devices are found in a vast number of computer networksand personal computer setups. Imaging devices include printers,facsimile machines (faxes), plotters, multi-function devices and otherdevices used for producing a tangible image from image data.

[0003] The image data is typically generated by some user application ina device external to the imaging device. An example includes composing adocument in a word-processing application of a computer workstation,generating image data in the word-processing application andcommunicating the image data to a networked or local printer to producea hard copy of the document.

[0004] For communications efficiency, the image data is generallyprovided to the imaging device in a compressed form. The compressed formmay be simply a compression of raster data, but is more commonly ahigh-level page description language (PDL) providing information to theimaging device on how to recreate the image. These PDLs are oftendevice-independent languages, i.e., the same image data can be providedto devices of differing types and/or differing manufacturers to producean end result that is substantially the same. Examples of PDLs includePrinter Command Language or PCL (Hewlett-Packard Company, Palo Alto,Calif., USA), PostScript® (Adobe Systems Incorporated, San Jose, Calif.,USA) and Interpress (Xerox Corporation, Stamford, Conn., USA).

[0005] To process these PDLs, imaging devices have what is oftenreferred to as a formatter. The formatter has a processor that isresponsive to a control program to convert the image data to a printableimage. The control program typically provides interpretation of thePDLs, character generation, device emulation, etc. The printable imageis typically uncompressed raster or bitmap information that is suppliedto another component of the imaging device, often referred to as anengine. The engine controls the mechanical components of the imagingdevice to produce a tangible output, such as a hardcopy of the printableimage.

[0006] The control programs responsible for conversion of the image dataare often referred to as formatter firmware or simply firmware. Firmwareis computer-readable instructions adapted to cause the processor toperform the conversion methods. These instructions are generally storedon a nonvolatile computer-usable medium. Some examples of nonvolatilecomputer-usable media include read-only memory (ROM),electrically-erasable programmable ROM (EEPROM or Flash memory),magnetic media and optical media. Because of the cost and access ratesof nonvolatile memory in comparison to dynamic random access memory(DRAM; a volatile storage media), the control programs are typicallystored on the nonvolatile media in a compressed form, then expanded andtransferred to a volatile media for use by the processor. This approachreduces the amount of nonvolatile media that must be installed in theimaging device, thus reducing cost, and increases the access rate of theinstructions by the processor, thus improving device performance.

[0007] For the reasons stated above, and for other reasons stated belowthat will become apparent to those skilled in the art upon reading andunderstanding the present specification, there is a need in the art foralternative approaches facilitating reduction of the amount ofnonvolatile storage media in imaging devices.

SUMMARY

[0008] Imaging devices and methods of operating imaging devices aredescribed that facilitate reducing nonvolatile storage needs of theimaging devices. The imaging devices are adapted to request controlprograms from external devices without the need to maintain anonvolatile image of a control program within the imaging device.Control programs are received on a communication input of the imagingdevice and stored on a volatile storage media for use by a processor ofthe imaging device. The embodiments can also facilitate more reliableupdating within a networked system in that updating an image of acontrol program on one network device can automatically lead to updatingof multiple imaging devices, thus eliminating a need to individuallyupdate each imaging device.

[0009] For one embodiment, the invention provides an imaging device. Theimaging device includes a communication input for receiving image datafrom an external device and a formatter for converting the image datainto a printable image as directed by a control program. The controlprogram is alterable through the communication input of the imagingdevice. The imaging device further contains no nonvolatile image of thecontrol program.

[0010] For another embodiment, the invention provides an imaging device.The imaging device includes a communication input for receiving imagedata and other signals from an external device and a communicationoutput. The imaging device further includes a formatter for convertingimage data into a printable image as directed by a control program, afirst computer-usable media for storing the control program, and asecond computer-usable media having computer-readable instructionsstored thereon capable of causing a processor to perform a method. Themethod includes providing a signal on the communication output of theimaging device indicative of a desire to transfer a control program froman external device to the communication input of the imaging device andwaiting for a control program to be received on the communication inputof the imaging device in response to the signal.

[0011] For yet another embodiment, the invention provides a method ofoperating an imaging device. The method includes generating a requestfor a control program upon an initialization of the imaging device. Thecontrol program is adapted to convert image data received by the imagingdevice into a printable image. The method further includes providing therequest on a communication output of the imaging device and waiting toreceive the control program via a communication input of the imagingdevice.

[0012] For a further embodiment, the invention provides acomputer-usable medium having computer-readable instructions storedthereon capable of causing a processor to perform a method. The methodincludes generating a request, in response to an initialization process,for a control program for converting image data into a printable image.The method further includes providing the request on a communicationoutput of the processor and waiting to receive the control program via acommunication input of the processor.

[0013] Further embodiments of the invention include apparatus andmethods of varying scope.

BRIEF DESCRIPTION OF THE DRAWINGS

[0014]FIG. 1 is a schematic of an imaging device in accordance with anembodiment of the invention.

[0015]FIG. 2 is a schematic of a formatter in accordance with anembodiment of the invention.

[0016]FIG. 3 is a flowchart of a method of operating an imaging devicein accordance with an embodiment of the invention.

[0017]FIG. 4 is a flowchart of a method of operating an imaging devicein accordance with another embodiment of the invention.

DETAILED DESCRIPTION

[0018] In the following detailed description of the present embodiments,reference is made to the accompanying drawings that form a part hereof,and in which is shown by way of illustration specific embodiments inwhich the invention may be practiced. These embodiments are described insufficient detail to enable those skilled in the art to practice theinvention, and it is to be understood that other embodiments may beutilized and that process, electrical or mechanical changes may be madewithout departing from the scope of the present invention. The followingdetailed description is, therefore, not to be taken in a limiting sense,and the scope of the present invention is defined only by the appendedclaims and equivalents thereof.

[0019] Standard operation of an imaging device is to load its controlprograms during an initialization of the imaging device, such as duringa power-up or re-boot of the device. The control programs contain atleast those instructions enabling the imaging device to recognize,interpret and convert image date to a printable image, such as thoseinstructions enabling a processor of the formatter to recognize anincoming data stream of page description language (PDL), and tointerpret and convert the PDL to a printable image for input to anengine controlling the mechanical aspects of the device.

[0020] Traditionally, these control programs have been stored on theimaging device in a nonvolatile storage media in a compressed form. Themost common form of nonvolatile storage media for imaging devices isFlash memory, also referred to as nonvolatile random-access memory(NVRAM). The compressed control programs are then expanded during theinitialization and copied or transferred to a volatile storage mediasuch as dynamic random-access memory (DRAM). DRAM is cheaper than NVRAMand DRAM has a higher access rate than NVRAM. However, DRAM requires aperiodic refresh, and thus an application of power, to maintain itsmemory contents. Accordingly, if power is lost to or removed from theimaging device, the control programs residing in DRAM will be lost, butthe compressed image of the control programs on the NVRAM will beretained.

[0021] While control programs have been stored on nonvolatile storagemedia, this does not imply that the control programs are necessarilypermanent. Although low-end or older imaging devices may utilize aread-only memory (ROM) that is unalterable by the end user, it is morecommon for the control programs to be stored on a nonvolatile storagemedia that is alterable by the end user. This ability is useful forupgrading the control programs, e.g., providing different or additionalfeatures, or for correcting the control programs, e.g., providing fixesto known errors within the control programs.

[0022] As an example, NVRAM can be rewritten or reprogrammed to changeits memory contents to represent the upgraded control programs. This istypically accomplished by sending a file to the imaging device having adata structure that is recognized by the imaging device's operatingsystem as containing control programs. This file, or firmware upgrade,is typically identified using header information within the file. Whenthe imaging device identifies an incoming data stream as containing afirmware upgrade, the file is processed to replace the control programscurrently residing in the NVRAM.

[0023] For the various embodiments, control programs for one or moreimaging devices are stored remote from the imaging devices for accessduring the initialization of the imaging devices. The control programsare communicated to an input of an imaging device during aninitialization of the imaging device, permitting bypass, and thuselimination, of nonvolatile storage media devoted to the controlprograms. The input is preferably an input/output (I/O) port of theimaging device, such as a parallel port, serial port, universal serialbus (USB) port or other such communication port. The I/O port is used bythe imaging device for receiving, among other things, image data from anetwork or local host device.

[0024]FIG. 1 is a schematic of an imaging device 110 in accordance withan embodiment of the invention. The imaging device 110 is incommunication with a host device 120 through a communication interface130. The imaging device 110 may be any device for producing a tangibleimage from image data. Examples include printers, facsimile machines(faxes), plotters and multi-function devices. The host device 120 may bea local host device, such as a personal computer or other workstation,providing direct communication between an end user and the imagingdevice 110. The host device 120 may further be a networked host device,such as a network server, acting as an intermediary between an end userand the imaging device 110.

[0025] The imaging device 110 includes a communication port or I/O port112. The I/O port 112 serves as a communication input for image data andother data, such as configuration data, commands and firmware upgrades,from the host device 110. The I/O port 112 also serves as acommunication output for communicating status information or requests tothe host device 120.

[0026] Data streams received at the I/O port 112 are interpreted by aformatter 114. If the data streams are recognized as image data, such asdata describing an image 140, the image data is converted to a printableimage for input to an engine 116. The engine 116 controls operation of amechanical portion 118 of the imaging device 110 to produce a tangibleimage 145 on an output 150.

[0027]FIG. 2 is a schematic of a formatter 114 in accordance with anembodiment of the invention. The formatter 114 includes a processor 252for communication with the I/O port 112 and the engine 116 of an imagingdevice 110. The processor is further in communication with a nonvolatilestorage media 254 and a volatile storage media 256. The storage media254 and 256 are computer-usable media for storing computer-readableinstructions for execution by the processor 252.

[0028] The nonvolatile storage media includes a portion of code, or aset of computer-readable instructions 255. The set of computer-readableinstructions 255 facilitate the operating system of the formatter 114.That is, the set of computer-readable instructions 255 enable theprocessor 252 to communicate across the I/O port 112 of the imagingdevice 110 and to communicate with the engine 116. For one embodiment,the set of computer-readable instructions 255 are capable of causing theprocessor 252 to request and receive a control program from a deviceexternal to the imaging device 110, such as a host device 120.

[0029] The request is provided on the I/O port 112 of the imaging device110. The processor 252 then looks for incoming data streams on the I/Oport 112. Incoming data streams are analyzed by the processor 252 todetermine whether they are indicative of a file containing a validcontrol program for the imaging device 110, e.g., as indicated in fileheader information. When an appropriate file is identified, theprocessor 252 processes the information to store the control program onthe volatile storage media 256 as a portion of code, or a set ofcomputer-readable instructions 257.

[0030] For one embodiment, the nonvolatile storage media 254 includes nocomputer-readable instructions capable of causing the processor 252 toconvert image data into a printable image for use by the engine 116,i.e., the imaging device 110 contains no nonvolatile image of aformatter control program. For another embodiment, the nonvolatilestorage media 254 contains a default version of a control programcapable of causing the processor 252 to convert image data into aprintable image. Such a default version, however, is preferablyunalterable by an end user of the imaging device 110. As an example, thedefault version of the control program can be stored on a ROM that isprogrammed as part of a manufacturing process of the imaging device 110.The default version of the control program would be expanded from thenonvolatile storage media 254 and copied to the volatile storage media256 for use by the processor 252 if no control program is available inresponse to the request provided at the I/O port 112. For such anembodiment, the imaging device 110 would have a base functionality asprovided by the default version of the control program. Additionalfeatures or fixes would be available only upon receiving a controlprogram via the I/O port 112 for transfer to the volatile storage media256.

[0031]FIG. 3 is a flowchart of a method of operating an imaging devicein accordance with an embodiment of the invention. At action box 360,the imaging device generates a request for a control program upon aninitialization of the imaging device. For example, during a bootsequence, a processor generates a signal indicative of a desire toreceive a control program from an external device. In more detail, theimaging device may request identification of what host device it isconnected to. When a host device acknowledges, the imaging device mayask if the host has a control program for the imaging device. If thehost device acknowledges that it has an appropriate image of the controlprogram, the imaging device can then request that it be communicated tothe imaging device.

[0032] The imaging device provides the request on a communication outputof the imaging device, e.g., the I/O port, at action box 362. For oneembodiment, the request is provided on the communication output of theimaging device through a communication output of a formatter of theimaging device as provided, e.g., on a communication output of aprocessor of the formatter. If the imaging device is connected to alocal host device, or if a host device acknowledged that a controlprogram was available, the imaging device may direct the request to aspecific device. Alternatively, if the imaging device is on a network,and the host device did not acknowledge that a control program wasavailable, the request may be broadcast to other network devices.

[0033] After communicating the request, the imaging device waits toreceive a control program on a communication input of the imagingdevice, e.g., the I/O port, at action box 364. Image data may beaccepted by the imaging device while it waits for the control program.However, such image data would be stored on some computer-usable media,such as the volatile storage media or even the nonvolatile storage mediaof the imaging device, until a control program was available to convertthe image data to a printable image.

[0034] When a control program, i.e., a data stream having datarepresentative of an image of the control program, arrives at thecommunication input of the imaging device at action box 366, the controlprogram is transferred to the volatile storage media for use by theprocessor to convert any image data into a printable image. Recognizinga data stream as having data representative of a control program neednot be different from existing recognition of a firmware upgrade file.However, instead of programming a nonvolatile storage media to containthe compressed image of the control program, a decompressed image istransferred directly to the volatile storage media.

[0035]FIG. 4 is a flowchart of a method of operating an imaging devicein accordance with another embodiment of the invention. For theembodiment of FIG. 4, the imaging device has an available image of adefault control program.

[0036] At action box 470, the imaging device generates a request for acontrol program upon an initialization of the imaging device. Forexample, during a boot sequence, a processor generates a signalindicative of a desire to receive a control program from an externaldevice. The imaging device provides the request on a communicationoutput of the imaging device, e.g., the I/O port, at action box 472.After communicating the request, the imaging device waits to receive acontrol program on a communication input of the imaging device, e.g.,the I/O port, at action box 474. Image data may be accepted by theimaging device while it waits for the control program.

[0037] If no control program is received within a predetermined timeoutperiod at decision box 476, a default control program is transferred tothe volatile storage media at action box 478 for use by the processor toconvert any image data into a printable image. The imaging device mayprovide some indication to a user of the imaging device that a controlprogram could not be found external to the imaging device. For example,the imaging device may provide a message for display to a user of thehost device and/or the imaging device may provide a message on a displayof the imaging device itself. If a control program arrives at thecommunication input of the imaging device at decision box 476 prior toan expiration of the timeout period, the control program received at thecommunication input is transferred to the volatile storage media ataction box 480 for use by the processor to convert any image data into aprintable image.

[0038] The methods of the various embodiments are suited to be performedby computer processors in response to instructions in either software,firmware or hardware. These computer-readable instructions are stored ona computer-usable medium and are adapted to cause the processor toperform the methods. In a hardware solution, the instructions are hardcoded as part of a processor, e.g., an application-specific integratedcircuit (ASIC) device, to perform the methods of one or more of theembodiments. In a software or firmware solution, the instructions arestored for retrieval by the processor. Some additional examples ofcomputer-usable media include static or dynamic random access memory(SRAM or DRAM), read-only memory (ROM), electrically-erasableprogrammable ROM (EEPROM), magnetic media and optical media, whetherpermanent or removable.

[0039] The various embodiments are particularly beneficial in networkedenvironments having multiple imaging devices using the same controlprogram. In this scenario, upgrading these multiple devices may beaccomplished simply by providing the updated control program images to anetwork server acting as a host device for each of the imaging devices.As each imaging device is initialized, it will look to the host for itscontrol program and automatically receive the updated version withoutindividually updating each imaging device.

[0040] Although the various embodiments reduce the need for nonvolatilestorage media, in that the control programs need not reside on anonvolatile storage media within the imaging device, the imaging devicesmay still contain some base level of nonvolatile storage media. Forexample, it may be desirable to maintain a nonvolatile image of code foruse in troubleshooting or for providing other user help information.

CONCLUSION

[0041] Imaging devices and methods of operating imaging devices havebeen described that facilitate reducing nonvolatile storage needs of theimaging devices. The imaging devices are adapted to request controlprograms from external devices without the need to maintain anonvolatile image of a control program within the imaging device.Control programs are received on a communication input of the imagingdevice and stored on a volatile storage media for use by a processor ofthe imaging device. The embodiments can also facilitate more reliableupdating within a networked system in that updating an image of acontrol program on one network device can automatically lead to updatingof multiple imaging devices, thus eliminating a need to individuallyupdate each imaging device.

[0042] Although specific embodiments have been illustrated and describedherein, it will be appreciated by those of ordinary skill in the artthat any arrangement that is calculated to achieve the same purpose maybe substituted for the specific embodiments shown. Many adaptations ofthe invention will be apparent to those of ordinary skill in the art.Accordingly, this application is intended to cover any such adaptationsor variations of the invention. It is manifestly intended that thisinvention be limited only by the following claims and equivalentsthereof.

What is claimed is:
 1. An imaging device, comprising: a communicationinput for receiving image data from an external device; and a formatterfor converting the image data into a printable image as directed by acontrol program; wherein the control program is alterable through thecommunication input of the imaging device; and wherein the imagingdevice contains no nonvolatile image of the control program.
 2. Theimaging device of claim 1, wherein the communication input may furtherreceive other data from the external device.
 3. The imaging device ofclaim 1, wherein the image data is page description language.
 4. Theimaging device of claim 1, wherein the control program is a set ofcomputer-readable instructions stored on a volatile computer-usablestorage media.
 5. The imaging device of claim 1, wherein the formatteris adapted to request the control program from the external device. 6.An imaging device, comprising: a communication input for receiving imagedata and other signals from an external device; a communication output;a formatter for converting image data into a printable image as directedby a control program; a first computer-usable media for storing thecontrol program; a second computer-usable media having computer-readableinstructions stored thereon capable of causing a processor to perform amethod, the method comprising: providing a signal on the communicationoutput of the imaging device indicative of a desire to transfer acontrol program from an external device to the communication input ofthe imaging device; and waiting for a control program to be received onthe communication input of the imaging device in response to the signal.7. The imaging device of claim 6, wherein the communication input andthe communication output are a single communication port.
 8. The imagingdevice of claim 6, wherein the method further comprises delayingconversion of any image data until a control program is received on thecommunication input of the imaging device and is stored on the firstcomputer-usable media.
 9. The imaging device of claim 6, wherein themethod further comprises delaying conversion of any image data for apredetermined timeout period while waiting for a control program to bereceived on the communication input of the imaging device.
 10. Theimaging device of claim 9, wherein the method further comprisestransferring a default control program from the second computer-usablemedia to the first computer-usable media if no control program isreceived on the communication input prior to expiration of the timeoutperiod.
 11. A method of operating an imaging device, comprising:generating a request for a control program upon an initialization of theimaging device, wherein the control program is adapted to convert imagedata received by the imaging device into a printable image; providingthe request on a communication output of the imaging device; and waitingto receive the control program via a communication input of the imagingdevice.
 12. The method of claim 11, further comprising: transferring thecontrol program from the communication input to a volatile storage mediaof the imaging device.
 13. The method of claim 11, wherein generating arequest for a control program further comprises generating a signalindicative of a desire to receive a control program from an externaldevice.
 14. The method of claim 13, wherein the signal is directed to asingle external device.
 15. The method of claim 11, further comprising:requesting identification of a host device connected to the imagingdevice prior to generating the request for a control program.
 16. Themethod of claim 15, further comprising: waiting for an acknowledgementby the host device after requesting identification; and asking the hostdevice if it has an available control program.
 17. The method of claim16, further comprising: broadcasting the request for a control programto multiple external devices if the host device does not have anavailable control program.
 18. The method of claim 11, furthercomprising: delaying conversion of any image data received by theimaging device while waiting to receive the control program via thecommunication input.
 19. The method of claim 18, further comprising:using a default control program if no control program is received viathe communication input within a predetermined timeout period.
 20. Themethod of claim 18, further comprising: transferring the control programreceived via the communication input to a volatile storage media of theimaging device for use in converting any image data received by theimaging device.
 21. A computer-usable medium having computer-readableinstructions stored thereon capable of causing a processor to perform amethod, the method comprising: generating a request, in response to aninitialization process, for a control program for converting image datainto a printable image; providing the request on a communication outputof the processor; and waiting to receive the control program via acommunication input of the processor.
 22. The computer-usable medium ofclaim 21, wherein the computer-usable medium and the processor are bothpart of an application-specific integrated circuit device.
 23. Thecomputer-usable medium of claim 21, wherein the computer-usable mediumand the processor are separate parts of a formatter for an imagingdevice.
 24. The computer-usable medium of claim 21, wherein generating arequest for a control program further comprises generating a signalindicative of a desire to receive a control program from an externaldevice.
 25. The computer-usable medium of claim 24, wherein the signalis adapted to be directed to a single external device.
 26. Thecomputer-usable medium of claim 21, wherein the method furthercomprises: requesting identification of any host device connected to theprocessor prior to generating the request for a control program.
 27. Thecomputer-usable medium of claim 26, wherein the method furthercomprises: waiting for an acknowledgement by a host device afterrequesting identification; and asking the acknowledging host device ifit has an available control program.
 28. The computer-usable medium ofclaim 27, wherein the method further comprises: broadcasting the requestfor a control program to multiple external devices if the acknowledginghost device does not have an available control program.
 29. Thecomputer-usable medium of claim 2 1, wherein the method furthercomprises: delaying conversion of any image data received by theprocessor while waiting to receive the control program via thecommunication input.
 30. The computer-usable medium of claim 29, whereinthe method further comprises: using a default control program if nocontrol program is received via the communication input within apredetermined timeout period.
 31. The computer-usable medium of claim29, wherein the method further comprises: transferring the controlprogram received via the communication input to a storage media for usein converting any image data received by the processor.